import { erroText } from './config';
import { IConfig } from './types';

/**
 * 异常分析 错误信息 => 错误解析文本
 */
export const erroToText = (error: string): string => {
  for (const reg in erroText) {
    if (new RegExp(reg).test(error)) {
      return erroText[reg];
    }
  }
  return '其他错误';
};

/**
 * 如果配置为文本类型，直接写入 label
 */
export const toLabel = (config?: IConfig | string): IConfig =>
  typeof config === 'string' ? { label: config } : config || {};

/**
 * 对象数据写入表单对象
 */
export const getFormData = (data: object) => {
  const body = new FormData();
  const setData = (data: object, key = '') => {
    Object.keys(data).forEach(i => {
      const item = data[i];
      if (item && typeof item === 'object' && !(item instanceof File)) {
        setData(item, key ? `${key}[${i}]` : i);
      } else {
        body.append(key ? `${key}[${i}]` : i, item);
      }
    });
  };
  setData(data);
  return body;
};
